package com.mathstruct;

public class Fig10_38 {

    /**
     * Standard matrix multiplication. Arrays start at 0. Assumes a and b are square.
     */
    public static int[][] multiply(int[][] a, int[][] b) {
        int n = a.length;
        int[][] c = new int[n][n];

        for (int i = 0; i < n; i++) // Initialization
        {
            for (int j = 0; j < n; j++) {
                c[i][j] = 0;
            }
        }

        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                for (int k = 0; k < n; k++) {
                    c[i][j] += a[i][k] * b[k][j];
                }
            }
        }

        return c;
    }

    public static void main(String[] args) {
        int[][] a = {{1, 2}, {3, 4}};
        int[][] c = multiply(a, a);

        System.out.println(c[0][0] + " " + c[0][1] + " " + c[1][0] + " " + c[1][1]);
    }
}
